SPSS 字符串变量基础
By Ruben Geert van den Berg under SPSS String Variables
为了熟练地使用 SPSS 字符串变量 (SPSS String Variables),理解一些字符串基础知识非常有帮助。本教程将解释什么是 SPSS 字符串变量,并演示其主要属性。
我们鼓励您下载并打开 string_basics.sav 一起学习。 我们使用的语法可以复制粘贴或从 这里 下载。
SPSS 字符串变量 - 是什么?
字符串变量 (String Variables) 是 SPSS 的两种 变量类型 之一。真正定义字符串变量的是其值的内部存储方式。我们不会在此深入探讨这个技术问题,但那些真正想了解的人可以参考我们的 Unicode 教程。一个更简单的定义是,字符串变量是包含零个或多个文本字符的变量。
字符串值始终被视为文本,即使它们只包含数字。本教程的结尾会展示一些令人惊讶的后果。
SPSS 字符串格式
SPSS 中的字符串变量通常具有 “A” 格式,其中 “A” 表示 “Alphanumeric”(字母数字)。可以通过运行以下 语法 (syntax) display dictionary.
(显示字典)来查看,在打开数据之后。结果(如下面的屏幕截图所示)确认我们有两个字符串变量,格式分别为 A3 和 A8。
数字后缀(此处为 3 和 8)是值可以容纳的 字节数 (bytes)。从 SPSS 16 版本开始,某些字符可能由两个字节组成。这在 Unicode 模式中进行了解释。如果您不想深入了解细节,只需选择两倍于需要包含的字符数的字符串长度,以确保安全。
SPSS STRING 命令
将值传递到变量中的命令,最值得注意的是 COMPUTE
和 IF,可用于现有和新的数值变量 (numeric variables)。但是,它们不能用于新的字符串变量;在将值传递到新的字符串变量之前,您必须首先创建一个或多个新的、空的字符串变量。这可以使用 STRING
命令来完成。其最基本的用法是 STRING variable_names (A10).
。如前所述,A10 表示新变量可以容纳最多 10 个字节的值。以下语法在我们的测试数据中创建一个新的字符串变量。
***1. Create empty new string variable with string command.
**
string string_3(a10).
***2. Pass values into new string variable.
**
compute string_3 = 'Hello'.
exe.
SPSS STRING 函数
SPSS 的 STRING
函数将数值 (numeric values) 转换为字符串值 (string values)。其最基本的用法是 compute s2 = string(s1,f1).
,其中 s2 是一个字符串变量,s1 是一个数值变量或值,f1 是要使用的数值格式 (format)。
关于我们的测试数据,以下语法展示了如何将 numeric_1 转换为(先前创建的)string_3。为了捕获所有三位数字,我们需要指定 f3 作为格式。
***Convert numeric_1 to (existing) string variable with string function.
**
compute string_3 = string(numeric_1,f3).
exe.
字符串值周围的引号
如果在语法中使用字符串值,请在它们周围加上引号。例如,假设我们要标记所有名字为 “Stefan” 的个案。屏幕截图显示了所需的结果。以下语法演示了错误的方式,然后是正确的方式。一种更快的方法是 compute find_stefan = string_2 = 'Stefan'.
。Compute A = B = C 解释了其工作原理。
***1. Compute empty flag variable.
**
compute find_stefan = 0.
exe.
***2. Wrong way: without quotes Stefan is thought to be variable name.
**
if string_2 = Stefan find_stefan = 1.
exe.
***3. Right way: quotes around Stefan.
**
if string_2 = 'Stefan' find_stefan = 1.
exe.
结果
标记名字为 Stefan 的案例
请注意,第二步会触发 SPSS 错误 #4285:由于省略了引号,SPSS 认为 Stefan 指的是一个变量名,并且在数据中找不到它。
字符串值区分大小写
现在让我们为名为 “Chrissy” 的个案创建一个类似的标志变量。在运行以下语法中的第 2 步之后,您可以在 数据视图 (data view) 中看到没有个案被标记;它使用了错误的大小写。第 3 步使用正确的大小写,确实 正确地标记了 “Chrissy”。
***1. Compute empty flag variable.
**
compute find_chrissy = 0.
exe.
***2. Line below doesn't flag any cases because 'chrissy' is not the same as 'Chrissy'.
**
if string_2 = 'chrissy' find_chrissy = 1.
exe.
***3. Right way: 'Chrissy' instead of 'chrissy'.
**
if string_2 = 'Chrissy' find_chrissy = 1.
exe.
SPSS 字符串变量 - 系统缺失值
在字符串变量中不存在 系统缺失值 (system missing value);由零个字符组成的字符串值(称为空字符串 (empty strings))在 SPSS 中是有效的值。另请注意,您在字符串变量的空单元格中看不到点(指示系统缺失值)。我们可以通过运行 FREQUENCIES 来确认这一点:frequencies string_2.
。请注意,空字符串值是有效值之一。
结果
字符串变量中的用户缺失值
多年来,我们看到了许多关于字符串变量中的 用户缺失值 (user missing values) 的论坛问题(以及一些激烈的辩论)。嗯,运行 missing values string_2('').
指定空字符串作为用户缺失值。可以通过重新运行其频率表来确认这一点;现在空字符串位于缺失值部分中,如屏幕截图所示。
结果
按字符串变量排序
字符串值被视为文本,即使它们仅由数字组成。一个结果是字符串值按字母顺序排序。要了解这意味着什么,请运行 sort cases by string_1.
。
string_1 的字母排序
如果这个结果让你感到困惑,用字母 a 到 j 表示数字 0 到 9。显然,如果按字母顺序排序,“bb”(= 11)在 “c”(= 2)之前。
字符串变量上没有计算
因为字符串值被视为文本,所以您不能对它们进行任何计算。例如,带有某些 数值函数 (numeric function) 的 COMPUTE 命令,例如 compute string_1 = string_1 * 2.
将触发 SPSS 错误 #4307。它基本上试图告诉我们,我们的命令崩溃了,因为在计算中使用了字符串变量。
以类似的方式,大多数过程涉及计算,因此也无法在字符串变量上运行。例如,descriptives string_1.
除了警告命令崩溃之外,不会产生任何其他结果,因为只涉及字符串变量。